<?php
namespace App\Common\Lib\Cache\KeyDB\Db\DbBase;

use App\Common as com;
use App\Common\Lib\Cache\KeyDB\Db\DbBase\_Cache as name_Cache;
use App\Common\Lib\Cache\KeyDB\Db\DbBase as nameDbBase;

/**
 * @property nameDbBase\DataStore $dataStore
 */
class _Cache extends com\Cla\ClaBase\CommonOfId\Client {

	/**
	 * 是否已加载数据
	 * @var bool
	 */
	private bool $hasDataCache = false;

	/**
	 * 缓存数据
	 * @var bool
	 */
	private $dataCache = false;

	/**
	 * 清空缓存
	 * @return $this
	 */
	public function clearCache(  ):self {
		$this->hasDataCache = false;
		$this->dataCache = false;
		//
		return $this;
	}

	/**
	 * 获取数据
	 * @param mixed $default 默认值。[false][默认]
	 * @return mixed 数据
	 * @throws
	 */
	public function get( $default = false ) {
		if( $this->hasDataCache === false ){
			$this->dataCache = $this->dataStore->main->get( $default );
			//
			$this->hasDataCache = true;
		}
		//
		return $this->dataCache;
	}

	/**
	 * 读取
	 * @param string|null $keyDbPath 数组路径（支持格式：1.PHP数组访问的格式，如：['a'][0]['b']， 2."->"分割，如：a->b->c）。 [null]获取所有
	 * @param mixed $default 默认值。[false][默认]
	 * @return mixed session数据
	 */
	public function getOfPath( ?string $keyDbPath, $default = false ) {
		return nameDbBase\DataOperation::getOfPath( $this->get(), $keyDbPath, $default );
	}

	/**
	 * 判断缓存是否存在(根据数据判断)
	 * @return boolean 是否存在。注意：如果数据存在且数据为false，则会返回false [true]存在 [false]不存在
	 */
	public function has(  ) {
		return $this->get() !== false;
	}

}
